package com.spsyry.product.domain;

import java.math.BigDecimal;
import java.util.List;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.spsyry.common.core.annotation.Excel;
import com.spsyry.common.core.web.domain.BaseEntity;

/**
 * 商品表对象 product
 * 
 * @author ruoyi
 * @date 2025-09-28
 */
public class Product extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 商品ID */
    private Long id;

    /** 商品名称 */
    @Excel(name = "商品名称")
    private String name;

    /** 商品副标题 */
    @Excel(name = "商品副标题")
    private String subTitle;

    /** 分类ID */
    @Excel(name = "分类ID")
    private Long categoryId;

    /** 品牌ID */
    @Excel(name = "品牌ID")
    private Long brandId;

    /** 商品价格 */
    @Excel(name = "商品价格")
    private BigDecimal price;

    /** 原价 */
    @Excel(name = "原价")
    private BigDecimal originalPrice;

    /** 库存数量 */
    @Excel(name = "库存数量")
    private Long stock;

    /** 主图URL */
    @Excel(name = "主图URL")
    private String mainImage;

    /** 子图URL列表 */
    @Excel(name = "子图URL列表")
    private String subImages;

    /** 状态：0-下架，1-上架，2-缺货 */
    @Excel(name = "状态：0-下架，1-上架，2-缺货")
    private Integer status;

    /** 销售数量 */
    @Excel(name = "销售数量")
    private Long salesCount;

    /** 浏览数量 */
    @Excel(name = "浏览数量")
    private Long viewCount;

    /** 是否热销：0-否，1-是 */
    @Excel(name = "是否热销：0-否，1-是")
    private Integer isHot;

    /** 是否新品：0-否，1-是 */
    @Excel(name = "是否新品：0-否，1-是")
    private Integer isNew;

    /** 是否推荐：0-否，1-是 */
    @Excel(name = "是否推荐：0-否，1-是")
    private Integer isRecommend;

    /** 逻辑删除：0-未删除，1-已删除 */
    @Excel(name = "逻辑删除：0-未删除，1-已删除")
    private Integer deleted;

    /** 商品详情信息 */
    private List<ProductDetail> productDetailList;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setName(String name) 
    {
        this.name = name;
    }

    public String getName() 
    {
        return name;
    }

    public void setSubTitle(String subTitle) 
    {
        this.subTitle = subTitle;
    }

    public String getSubTitle() 
    {
        return subTitle;
    }

    public void setCategoryId(Long categoryId) 
    {
        this.categoryId = categoryId;
    }

    public Long getCategoryId() 
    {
        return categoryId;
    }

    public void setBrandId(Long brandId) 
    {
        this.brandId = brandId;
    }

    public Long getBrandId() 
    {
        return brandId;
    }

    public void setPrice(BigDecimal price) 
    {
        this.price = price;
    }

    public BigDecimal getPrice() 
    {
        return price;
    }

    public void setOriginalPrice(BigDecimal originalPrice) 
    {
        this.originalPrice = originalPrice;
    }

    public BigDecimal getOriginalPrice() 
    {
        return originalPrice;
    }

    public void setStock(Long stock) 
    {
        this.stock = stock;
    }

    public Long getStock() 
    {
        return stock;
    }

    public void setMainImage(String mainImage) 
    {
        this.mainImage = mainImage;
    }

    public String getMainImage() 
    {
        return mainImage;
    }

    public void setSubImages(String subImages) 
    {
        this.subImages = subImages;
    }

    public String getSubImages() 
    {
        return subImages;
    }

    public void setStatus(Integer status) 
    {
        this.status = status;
    }

    public Integer getStatus() 
    {
        return status;
    }

    public void setSalesCount(Long salesCount) 
    {
        this.salesCount = salesCount;
    }

    public Long getSalesCount() 
    {
        return salesCount;
    }

    public void setViewCount(Long viewCount) 
    {
        this.viewCount = viewCount;
    }

    public Long getViewCount() 
    {
        return viewCount;
    }

    public void setIsHot(Integer isHot) 
    {
        this.isHot = isHot;
    }

    public Integer getIsHot() 
    {
        return isHot;
    }

    public void setIsNew(Integer isNew) 
    {
        this.isNew = isNew;
    }

    public Integer getIsNew() 
    {
        return isNew;
    }

    public void setIsRecommend(Integer isRecommend) 
    {
        this.isRecommend = isRecommend;
    }

    public Integer getIsRecommend() 
    {
        return isRecommend;
    }

    public void setDeleted(Integer deleted) 
    {
        this.deleted = deleted;
    }

    public Integer getDeleted() 
    {
        return deleted;
    }

    public List<ProductDetail> getProductDetailList()
    {
        return productDetailList;
    }

    public void setProductDetailList(List<ProductDetail> productDetailList)
    {
        this.productDetailList = productDetailList;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("name", getName())
            .append("subTitle", getSubTitle())
            .append("categoryId", getCategoryId())
            .append("brandId", getBrandId())
            .append("price", getPrice())
            .append("originalPrice", getOriginalPrice())
            .append("stock", getStock())
            .append("mainImage", getMainImage())
            .append("subImages", getSubImages())
            .append("status", getStatus())
            .append("salesCount", getSalesCount())
            .append("viewCount", getViewCount())
            .append("isHot", getIsHot())
            .append("isNew", getIsNew())
            .append("isRecommend", getIsRecommend())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("createBy", getCreateBy())
            .append("updateBy", getUpdateBy())
            .append("deleted", getDeleted())
            .append("productDetailList", getProductDetailList())
            .toString();
    }
}
